/*
请编写一个函数，使其可以删除某个链表中给定的（非末尾）节点。传入函数的唯一参数为 要被删除的节点 。



现有一个链表 -- head = [4,5,1,9]，它可以表示为:



示例 1：

输入：head = [4,5,1,9], node = 5
输出：[4,1,9]
解释：给定你链表中值为 5 的第二个节点，那么在调用了你的函数之后，该链表应变为 4 -> 1 -> 9.
示例 2：

输入：head = [4,5,1,9], node = 1
输出：[4,5,9]
解释：给定你链表中值为 1 的第三个节点，那么在调用了你的函数之后，该链表应变为 4 -> 5 -> 9.


*/


/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */

function ListNode(val) {
    this.val = val;
    this.next = null;
}

const init = (arr) => {
    let first = null
    let p = null
    for (let i = 0; i < arr.length; i++) {
        const node = new ListNode(arr[i])
        if (!first) {
            p = node
            first = p
            continue
        }
        p.next = node
        p = node
    }
    return first
}
/**
 * @param {ListNode} node
 * @return {void} Do not return anything, modify node in-place instead.
 */
var deleteNode = function (head, node) {

    let first = head
    let sencond = head.next
    if (first.val == node) {
        return first.next
    }
    do {
        if (sencond.val == node) {
            first.next = sencond.next
            return
        } else {
            first = first.next
            sencond = first.next
        }
    } while (sencond != null)
};

const head = init([4, 5, 1, 9, 7])
deleteNode(head, 9)
console.log(head)